#!/bin/bash
#SyncTime - sincroniza horário na rede interna
#autor: Ricardo Brito do Nascimento
#email: ricardo[at]rbncurriculo.cjb.net
#v2.0
#
#Data: 31/10/2007
#
#Descrição:
# Este script atualiza a hora de máquinas linux atraves de um
# servidor ntp disponível, e acrescenta automaticamente a entrada
# no /etc/crontrab para sincronização automática de hora, 
# é necessário estar logado como 'root' para atualização do crontab



SINCSERVER=10.1.0.1
ZICFILE=Sao_Paulo.zic
TIMEFILE=/usr/share/zoneinfo/America/Sao_Paulo
TIMEFILECONF=/etc/localtime
EXTOLDTIMEFILECONF='default'

# Aborta instação sem which
if [ ! -e /usr/bin/which ]; then
        echo "Nota: which é requerido para este script! finalizando Agora."
        exit 1
fi

# Aborta instação sem mv
if [ -z `which mv 2> /dev/null` ]; then
        echo "Nota: mv é requerido para $0! finalizando Agora."
        exit 1
fi

# Aborta instação sem ln
if [ -z `which ln 2> /dev/null` ]; then
        echo "Nota: ln é requerido para $0! finalizando Agora."
        exit 1
fi

# Aborta instação sem zic
if [ -z `which zic 2> /dev/null` ]; then
        echo "Nota: zic é requerido para $0! finalizando Agora."
        exit 1
fi

# Aborta instação sem ntpdate
if [ -z `which ntpdate 2> /dev/null` ]; then
        echo "Nota: ntpdate é requerido para $0! finalizando Agora."
        exit 1
fi

# Aborta instação sem tabela fuso de horário
if [ ! -e $ZICFILE ]; then
        echo "Nota: o arquivo $ZICFILE é requerido para este script! finalizando Agora."
        exit 1
fi

mv $TIMEFILECONF $TIMEFILECONF.$EXTOLDTIMEFILECONF
ln -s $TIMEFILE $TIMEFILECONF
zic $ZICFILE
ntpdate $SINCSERVER

#Campo  Função
#1o.    Minuto
#2o.    Hora
#3o.    Dia do mês
#4o.    Mês
#5o.    Dia da semana (D[0|7] S[1] T[2] Q[3] Q[4] S[5] S[6])
#6o.    Usuário que executa o comando
#7o.	comando ou Programa pra execução

echo '#m h dom mon dow user  command' >> /etc/crontab
echo ' 0 0  *   *   *  root  ntpdate '$SINCSERVER >> /etc/crontab

